Spring(3)事务 您所在的位置:网站首页 spring 事务使用 Spring(3)事务

Spring(3)事务

2023-07-04 09:32| 来源: 网络整理| 查看: 265

事务特性:要么都成功,要么都失败。事务在项目开发中十分重要,涉及到数据的一致性问题。

事务ACID原则:原子性:要么都成功,要么都失败。一致性:一个事务必须使数据库从一个一致性状态变换到另一个一致性状态。隔离性:多个事务可能操作同一个资源,为了数据的正确性,防止数据损坏。持久性:一旦事务完成,那么它一定都存在在数据库。

原子性举例:银行转账操作,假设A向B转100元,需要两步操作:扣除A账户的100元,增加B账户的100元。原子性保证了要么这两步都成功执行,要么都不执行,以确保业务流程的完整和数据的一致性。 

一致性举例:一致性要求转账操作前,A和B账户的总金额为1000元(假设),转账操作成功后,A和B账户的总金额依然为1000元。这保证了数据库从一个一致性状态(转账前)转换到另一个一致性状态(转账后),整体数据状态符合预期规则。

总结:原子性关注事务内部的操作,保证事务中的所有操作要么都成功,要么都回滚;而一致性关注的是事务执行前后,数据库的整体状态,确保不同的事务之间,数据满足预先定义的规则和约束。两者的结合确保了数据库事务在执行过程中的正确性和稳定性。

Spring 中的事务管理

1.声明式事务:AOP横切,不需要修改原来代码

2.编程式事务:需要在代码中进行事务的管理

要开启 Spring 的事务处理功能,在 Spring 的配置文件中创建一个DataSourceTransactionManager对象。

声明式事务

xmlns:tx="http://www.springframework.org/schema/tx" http://www.springframework.org/schema/tx https://www.springframework.org/schema/tx/spring-tx.xsd

或者官方

 

编程型事务

你不能在 Spring 管理的 SqlSession 上调用 SqlSession.commit(),SqlSession.rollback() 或 SqlSession.close() 方法。如果这样做了,就会抛出 UnsupportedOperationException 异常。在使用注入的映射器时,这些方法也不会暴露出来。

public class UserService { private final PlatformTransactionManager transactionManager; public UserService(PlatformTransactionManager transactionManager) { this.transactionManager = transactionManager; } public void createUser() { TransactionStatus txStatus = transactionManager.getTransaction(new DefaultTransactionDefinition()); try { userMapper.insertUser(user); } catch (Exception e) { transactionManager.rollback(txStatus); throw e; } transactionManager.commit(txStatus); } }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有